package com.xu.system.controller;

import com.xu.base.model.BaseSelectVo;
import com.xu.mybatis.model.PageInfo;
import com.xu.system.model.pojo.dept.*;
import com.xu.system.service.IDeptService;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 部门控制器
 *
 * @Author: 许乾伟
 * @Date: 2024/11/4 10:49
 */
@RestController
@RequestMapping("dept")
public class DeptController {
    @Autowired
    IDeptService deptService;

    /**
     * 新增部门
     * @param req 新增部门请求
     * @return true:成功;false:失败
     */
    @PostMapping("add")
    public Boolean add(@Valid @RequestBody AddDeptReq req) {
        return deptService.add(req);
    }
    /**
     * 编辑部门
     * @param req 编辑部门请求
     * @return true:成功;false:失败
     */
    @PostMapping("edit")
    public Boolean edit(@Valid @RequestBody EditDeptReq req) {
        return deptService.edit(req);
    }
    /**
     * 删除部门
     * @param deptId 部门id
     * @return true:成功;false:失败
     */
    @PostMapping("del/{deptId}")
    public Boolean del(@PathVariable("deptId") Long deptId) {
        return deptService.del(deptId);
    }

    /**
     * 部门详情
     * @param deptId 部门id
     * @return
     */
    @GetMapping("detail/{deptId}")
    public DeptVo detail(@PathVariable("deptId") Long deptId){
        return deptService.detail(deptId);
    }
    /**
     * 分页查询部门
     * @param req 分页查询部门请求
     * @return 部门分页列表
     */
    @GetMapping("page")
    public PageInfo<DeptSimpleVo> page(@Valid QueryDeptReq req) {
        return deptService.pageInfo(req);
    }

    /**
     * 查询所有的部门
     * @param req
     * @return
     */
    @GetMapping("list")
    public List<DeptSimpleVo> list(@Valid QueryDeptReq req){
        return deptService.all(req);
    }

    /**
     * 部门树
     * @param req
     * @return
     */
    @GetMapping("tree")
    public List<DeptSimpleTreeVo> tree(@Valid QueryDeptReq req){
        return deptService.tree(req);
    }

    /**
     * 部门下拉列表
     * @return
     */
    @GetMapping("allSelectList")
    public List<BaseSelectVo<Long,String>> allSelectList(){
        return deptService.allSelectList();
    }
}
